//
//  main.m
//  04-NSDictionary(ManageColor)
//
//  Created by LL.F on 16/7/7.
//  Copyright © 2016年 LL.F. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Color.h"
int main(int argc, const char * argv[]) {
    
    // 处理⽂件crayons.txt中的⽂本信息，⽂本内容是关于颜⾊的，每⾏都是⼀个颜⾊的信息.例如：Almond #EED9C4，前⼀个字符串是颜⾊的名称，后⼀个字符串是颜⾊的16进制⾊值，处理⽂本完成如下需求:
    // 1.使⽤字典管理所有的颜⾊，即字典中存储的是多个键值对，颜⾊名称为key，16进制颜⾊值（不带#）是value。
    // 2.使⽤⼀个新的字典管理颜⾊，对颜⾊进⾏分类管理，即：“A”，“B”，“C”… 即这个字典包含多个键值对，key是26个字⺟，value是数组，数组⾥存放的是 Color对象（包含name和colorValue）。需要⾃⼰创建Color类。
    // 3.根据得到的sourceStr进行处理
   
    
    NSString *path = @"/Users/LL.F/DLS160710/Objective-C/HomeWork/04-NSDictionary(ManageColor)/04-NSDictionary(ManageColor)/Homework-04/crayons.txt";//注意: 数据源最后一行是空, 需要另行处理
    // 通过文件路径, 读取文件中的字符串
    NSString *sourceStr = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    NSArray *array = [sourceStr componentsSeparatedByString:@"\n"];
    // 字典管理所有颜色
    NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
    for (NSString *str in array) {
        if (str.length > 0) {// 删除数据源中有空行的部分
        NSArray *arr = [str componentsSeparatedByString:@"#"];
        [dictionary setObject:[arr lastObject] forKey:[arr firstObject]];
        }
    }
    NSLog(@"%@", dictionary);
    
    // 新字典管理所有颜色并分组
    NSMutableDictionary *colorDic = [NSMutableDictionary dictionary];
    for (NSString *str in array) {
        if (str.length > 0) {// 删除数据源中有空行的部分
            NSArray *arr = [str componentsSeparatedByString:@"#"];
            Color *color = [[Color alloc] initWithName:[arr firstObject] colorValue:[arr lastObject]];
            NSString *firstLetter = [color.name substringWithRange:NSMakeRange(0, 1)];
            if ([colorDic objectForKey:firstLetter]) {//判断数组是否为空, 不为空时
                NSMutableArray *letterArray = [colorDic objectForKey:firstLetter];
                [letterArray addObject:color];
            } else {//数组为空时
                NSMutableArray *newArray = [NSMutableArray array];
                [newArray addObject:color];
                [colorDic setObject:newArray forKey:firstLetter];
            }
        }
        NSLog(@"%@", colorDic);
    }
        return 0;
}
